package com.boot.study.wc

import org.apache.flink.api.common.operators.Order
import org.apache.flink.api.scala._

/**
 * 批处理统计
 */
object WordCout {
  def main(args: Array[String]): Unit = {
    // 创建批处理执行环境
    val env: ExecutionEnvironment = ExecutionEnvironment.getExecutionEnvironment
    // 从文件中读取数据
    // D:\WorkSpace\idea\Flink\src\main\resources\hello.txt
    val inputPath: String = "D:\\WorkSpace\\idea\\Flink\\src\\main\\resources\\hello.txt"
    val dataSet: DataSet[String] = env.readTextFile(inputPath)
    // 对数据
    val resultDataSet: DataSet[(String, Int)] = dataSet.flatMap(_.split(" "))
      .map((_, 1))
      .groupBy(0) // 以第一个元素作为key，进行分组
      .sum(1) // 对所有数据的第二个元素求和
      .sortPartition(1, Order.DESCENDING) // 降序
    // 打印输出
    resultDataSet.print()
  }
}
